Quick Start Typescript ~ 6์žฅ ์ •๋ฆฌ

์นดํƒˆ๋กœ๊ทธ
  1. 1. 6์žฅ ํ•จ์ˆ˜ ๋ชฉ์ฐจ
  2. 2. ๐Ÿ“p151. ํ•จ์ˆ˜ (Js vs Ts ๋น„๊ต)
    1. 2.1. js์˜ ๊ฒฝ์šฐ
      1. 2.1.1. ๊ฒฐ๊ณผ
    2. 2.2. ts์˜ ๊ฒฝ์šฐ
      1. 2.2.1. ๊ฒฐ๊ณผ
  3. 3. ๐Ÿ“p156. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ดˆ๊ธฐ๊ฐ’
    1. 3.1. ES6 ์ด์ „
    2. 3.2. ES6 ์ดํ›„
  4. 4. ๐Ÿ“p159. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜
    1. 4.1. ES6 ์ด์ „
    2. 4.2. ES6 ์ดํ›„
    3. 4.3. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ์ง€์ •๋ฒ•
  5. 5. ๐Ÿ“p162. ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜
    1. 5.1. js์˜ ๊ฒฝ์šฐ
    2. 5.2. ts
  6. 6. ๐Ÿ“p164. ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋“œ
  7. 7. ๐Ÿ“p170. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์œ ์˜์ 
  8. 8. ๐Ÿ“p171. filter, reduce
  9. 9. ๐Ÿ“p173. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์„ ์–ธ
    1. 9.1. Typescript์—์„œ this ํƒ€์ž… ์„ ์–ธ
  10. 10. ๐Ÿ“p177. type ๋ช…๋ช…๋ฒ•
  • type๋Š” ์•ž์ด ๋Œ€๋ฌธ์ž๊ฐ€ ์•„๋‹˜
    1. 1. ๐Ÿ“p179. jquery -> VanillaJS
      1. 1.1. Jquery
      2. 1.2. js
    2. 2. ๐Ÿ“ 180. ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ(ex. Chrome API)
  • ๐Ÿ“– Quick Start Typescript ์„ ์ฝ๊ณ , ๊ฐ„๋‹จํžˆ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„์ด๋‚˜ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ถ€๋ถ„์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

    6์žฅ ํ•จ์ˆ˜ ๋ชฉ์ฐจ

    1. ์‚ฌ์šฉ๋ฒ• (Js vs Ts ๋น„๊ต)
    2. ๋งค๊ฐœ๋ณ€์ˆ˜
      1. ์ดˆ๊ธฐ๊ฐ’ ์ง€์ •
      2. ...rest ๋งค๊ฐœ๋ณ€์ˆ˜
      3. ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์ •
      4. ์˜ค๋ฒ„๋กœ๋“œ
    3. ์ต๋ช… ํ•จ์ˆ˜
      1. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
      2. ํƒ€์ž… ์„ ์–ธ
      3. ์ฝœ๋ฐฑ ํ•จ์ˆ˜

    ๐Ÿ“p151. ํ•จ์ˆ˜ (Js vs Ts ๋น„๊ต)

    js์˜ ๊ฒฝ์šฐ

    1
    2
    3
    4
    5
    6
    7
    8
    function max(x, y) {
    return x > y ? x : y;
    }

    max(1, 10); // 10
    max(1, 10, 12); // 10, ์ดํ›„ ์ธ์ž๊ฐ’์€ ๋ฌด์‹œ๋‹นํ•จ
    max(`a`, `b`); // `b`
    max(`c`, `aaa`); //`c`, ์œผ์Œ... ๋ฌธ์ž์—ด ์ฒซ๋ฒˆ์งธ๊ฐ’์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’์ธ๊ฐ€?

    ๊ฒฐ๊ณผ

    ์ด๋ฏธ์ง€

    ts์˜ ๊ฒฝ์šฐ

    1
    2
    3
    4
    5
    6
    function max(x: number, y: number): number {
    return x > y ? x : y;
    }
    max(1, 10); // 10
    max(1, 10, 12); // Error: ์ธ์ž ๊ฐœ์ˆ˜ ์—๋Ÿฌ
    max(`a`, `b`); // Error: ์ธ์ž ํƒ€์ž… ์—๋Ÿฌ

    ๊ฒฐ๊ณผ

    ์ด๋ฏธ์ง€

    ๐Ÿ“p156. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ดˆ๊ธฐ๊ฐ’

    ES6๋ถ€ํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ง€์ • ๋ฐ›์ง€ ์•Š์•„๋„, ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ๊ฐ’์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ๋จ

    ์ฝ”๋“œ๋„ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  complexity๋„ ๋‚ฎ์•„์ง

    ES6 ์ด์ „

    1
    2
    3
    4
    function test(param) {
    param = param || `์ดˆ๊ธฐ๊ฐ’`;
    console.log(param);
    }

    ์ด๋ฏธ์ง€

    ES6 ์ดํ›„

    1
    2
    3
    function test(param = `์ดˆ๊ธฐ๊ฐ’`) {
    console.log(param);
    }

    ์ด๋ฏธ์ง€

    ๐Ÿ“p159. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜

    ES6๋ถ€ํ„ฐ ์ƒ๊ธด ๊ธฐ๋Šฅ, ์ •์˜๋˜์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ธฐ ํŽธํ•ด์ง

    ES6 ์ด์ „

    arguments๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ์•Œ๋ ค์ง (๋ณด์•ˆ)

    1
    2
    3
    function test() {
    console.log(arguments);
    }

    ์ด๋ฏธ์ง€

    ES6 ์ดํ›„

    1
    2
    3
    function test(...args) {
    console.log(args);
    }

    ์ด๋ฏธ์ง€

    ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ์ง€์ •๋ฒ•

    ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ํƒ€์ž… ์ง€์ •์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์ฒ˜์Œ ์•Œ์•˜๋‹ค

    1
    2
    3
    4
    // ์ฒ˜์Œ 1๊ฐœ ๊ฐ’์„ ์ง€์ •ํ•˜๋ฉด, concat()๊ฐ™์ด ์•„๋ฌด๊ฒƒ๋„ ๋ฐ›์ง€์•Š์•˜์„ ๋•Œ๋Š” ์œ ํšจํ•˜์ง€์•Š์Œ
    function concat(a: string, ...restStr: string[]): string {
    return `${a} ${restStr.join(` `)}`;
    }

    ๐Ÿ“p162. ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜

    js์˜ ๊ฒฝ์šฐ

    1
    2
    3
    4
    5
    6
    7
    8
    function sum(a, b) {
    console.log(arguments);
    return a + b;
    }

    sum(1); // NaN
    sum(1, 2); // 3
    sum(1, 2, 3) // 3, ์ดํ›„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉ๋˜์ง„ ์•Š์ง€๋งŒ, ๋ฐ›์Œ

    ์ด๋ฏธ์ง€

    ts

    1
    2
    3
    4
    5
    6
    7
    function sum(a: number, b?: number): number {
    return a + b;
    }

    sum(1); // NaN, js์™€ ๊ฒฐ๊ณผ๋Š” ๋™์ผ
    sum(1, 2); // 3
    sum(1, 2, 3) // Error ์ธ์ž ์ดˆ๊ณผ

    ๐Ÿ“p164. ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋“œ

    ์ž˜ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„

    ํ•จ์ˆ˜๋ช…์€ ๊ฐ™์ง€๋งŒ, ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ ๊ฐ€๋Šฅ, ๋Ÿฐํƒ€์ž„ ๋น„์šฉ์ด ๋ณ„๋„ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ

    ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํƒ€์ž…์„ ๊ฐ€์žฅ ์•„๋ž˜์— ์„ ์–ธ(ex. any๊ฐ€ ๊ฐ€์žฅ ์•„๋ž˜), ์œ„์ผ ์ˆ˜๋ก ๊ตฌ์ฒด์  (์ˆœ์„œ ์ค‘์š”!)

    1
    2
    3
    4
    5
    6
    7
    8
    function add(a: string, b: string);
    function add(a: number, b: number);
    function add(a: any, b: any): any {
    return a + b;
    }

    console.log(add(1, 2)); // 3
    console.log(add(`test1`, `test2`)); // test1test2

    ๐Ÿ“p170. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์œ ์˜์ 

    1
    2
    3
    4
    5
    // bad case
    const test = x => { x; }; // block{}์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๋ฌด์กฐ๊ฑด return์ด ํ•„์š”ํ•จ!

    // good case
    const test = x => { return x; };

    ๐Ÿ“p171. filter, reduce

    ๐Ÿ“p173. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์„ ์–ธ

    ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ์งค ๋•Œ ์ข‹์€ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ฌธ๋ฒ•

    1
    2
    3
    4
    5
    6
    7
    8
    let person = {
    name: `Taeuk`,
    hello: function (yourName) {
    console.log(`Hello ${yourName}, I'm ${this.name}`);
    }
    }

    person.hello(`minsu`);

    ์ด๋ฏธ์ง€

    ์ฃผ์˜์‚ฌํ•ญ

    function์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— this.name์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„

    ๋งŒ์•ฝ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ๋œฐ ๊ฒƒ ์ด๋‹ค. (ํ˜„์žฌ๋Š” this๊ฐ’์ด window(์ตœ์ƒ์œ„)๋กœ ์žก์€ ์ผ€์ด์Šค)

    ์ด๋ฏธ์ง€

    Typescript์—์„œ this ํƒ€์ž… ์„ ์–ธ

    ์ž˜ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„

    1
    2
    3
    4
    interface PersonType {
    name: string;
    hello(this: PersonType, yourName: string): string;
    }

    ๐Ÿ“p177. type ๋ช…๋ช…๋ฒ•

    <<<<<<< HEAD

    ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„

    type๋Š” ์•ž์ด ๋Œ€๋ฌธ์ž๊ฐ€ ์•„๋‹˜

    type๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘, ์ฑ…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘๋˜์„œ ์ด์ƒํ•ด์„œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐพ์•„๋ด„

    ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š”๊ฒŒ ํ‘œ์ค€ ์ผ€์ด์Šค์ธ ๊ฒƒ ๊ฐ™์Œ

    69d06d879cf539e94f86963fe76ebff54737f05b

    1
    type calcType = (a: number, b: number) => number;

    <<<<<<< HEAD

    =======
    ๊ณต์‹ ๋ ˆํผ๋Ÿฐ์Šค

    69d06d879cf539e94f86963fe76ebff54737f05b

    ๐Ÿ“p179. jquery -> VanillaJS

    ์Œโ€ฆ ์™œ ๊ตณ์ด ์˜ˆ์‹œ๋ฅผ Jquery๋กœ ๋“ค์—ˆ๋Š”์ง€ ๋ชฐ๋ผ์„œ ์ž‘์„ฑ

    Jquery

    1
    2
    3
    $(`#myButton`).click(function() {
    alert(`๋ฒ„ํŠผ`);
    })

    js

    1
    2
    3
    document.querySelector(`#myButton`).addEventListener(`click`, () => {
    window.alert(`๋ฒ„ํŠผ`);
    });

    ๐Ÿ“ 180. ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ(ex. Chrome API)

    Promise, async/ await ์œผ๋กœ ๋ฐ”๋€Œ๋Š” ์ถ”์„ธ์ด์ง€๋งŒ, ์•„์ง๋„ ๋งŽ์€ ๋ถ€๋ถ„์— callback ํ•จ์ˆ˜๊ฐ€ ๋‚จ์•„์žˆ๋‹ค.

    image-20200323082731982